﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Telerik.Web.UI;
using SMA.GENTEv1;

public partial class Protegidos_Empresas_Documentos_edFiscalNotasEmitidas : PageBase 
{

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            CarregaComboContrato(cboContrato);
            CarregaComboAno(cboAno);
            CarregaComboMes(cboMes);
            OcultaCampos(true);

            if (Session["WorkFlow"] != null)
                Session["WorkFlow"] = null;
        }
    }

    #region Eventos
    protected void btnPesquisar_Click(object sender, EventArgs e)
    {
        try
        {
            Pesquisa();
            rgNotasEmitidas.DataBind();
            OcultaCampos(false);
        }
        catch (Exception ex)
        {
            lblResultado.Text = ex.Message;
        }
    }

    protected void btnLimpar_Click(object sender, EventArgs e)
    {
        foreach (RadComboBoxItem item in cboContrato.Items)
        {
            CheckBox chk = (CheckBox)item.FindControl("chk1");
            chk.Checked = true;
        }
        cboContrato.SelectedIndex = 0;

        foreach (RadComboBoxItem item in cboAno.Items)
        {
            CheckBox chk = (CheckBox)item.FindControl("chk1");
            chk.Checked = true;
        }
        cboAno.SelectedIndex = 0;

        foreach (RadComboBoxItem item in cboMes.Items)
        {
            CheckBox chk = (CheckBox)item.FindControl("chk1");
            chk.Checked = true;
        }
        cboMes.SelectedIndex = 0;

        OcultaCampos(true);
    }

    protected void rgNotasEmitidas_ItemCreated(object sender, GridItemEventArgs e)
    {
        if (e.Item is GridDataItem)
        {
            HyperLink editLink = (HyperLink)e.Item.FindControl("EditLink");
            editLink.Attributes["href"] = "#";
            editLink.Attributes["onclick"] = String.Format("return ShowEditForm('{0}','{1}');", e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["IdContratoNFEmitida"], e.Item.ItemIndex);
        }
    }

    protected void rgNotasEmitidas_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
    {
        Pesquisa();
    }

    protected void rgNotasEmitidas_DeleteCommand(object sender, Telerik.Web.UI.GridCommandEventArgs e)
    {
        try
        {
            lblResultado.Text = "";

            ContratoNotasEmitidas nfEmitidas = new ContratoNotasEmitidas();

            GridEditableItem editedItem = e.Item as GridEditableItem;

            int idcontratoNFEmitida = int.Parse(editedItem.OwnerTableView.DataKeyValues[editedItem.ItemIndex]["IdContratoNFEmitida"].ToString());
            nfEmitidas.IdContratoNFEmitida = idcontratoNFEmitida;
            nfEmitidas.Excluir();
        }
        catch (Exception ex)
        {
            lblResultado.Text = ex.Message;
        }
    }

    protected void RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)
    {
        Pesquisa();
        rgNotasEmitidas.DataBind();
    }
    #endregion

    #region Metodos
    private void CarregaComboContrato(RadComboBox combo)
    {
        OrganizacaoPatrocinadorPrestador organRelacao = new OrganizacaoPatrocinadorPrestador(IdPatrocinador, IdPrestador);

        Contrato contrato = new Contrato();
        List<Contrato> listContrato = contrato.SelectContratoVigencia(organRelacao.IdOrganizacaoRelacao);

        DataTable _dtContrato = new DataTable();

        DataColumn _dcDescricao = new DataColumn();
        _dcDescricao.ColumnName = "Descricao";
        _dcDescricao.DataType = Type.GetType("System.String");
        _dtContrato.Columns.Add(_dcDescricao);

        DataColumn _dcIdContrato = new DataColumn();
        _dcIdContrato.ColumnName = "IdContrato";
        _dcIdContrato.DataType = Type.GetType("System.String");
        _dtContrato.Columns.Add(_dcIdContrato);

        DataRow _drContrato;
        _drContrato = _dtContrato.NewRow();

        _drContrato["Descricao"] = "Todos";
        _drContrato["IdContrato"] = "0";
        _dtContrato.Rows.Add(_drContrato);

        foreach (Contrato _contr in listContrato)
        {
            _drContrato = _dtContrato.NewRow();
            _drContrato["Descricao"] = _contr.Descricao;
            _drContrato["IdContrato"] = _contr.IdContrato;
            _dtContrato.Rows.Add(_drContrato);
        }

        combo.DataSource = _dtContrato;
        combo.DataBind();

        // tratamento para situação de selecionar o contrato conforme o link do e-mail para os respectivo documento
        if (Session["WorkFlow"] != null)
        {
            RadComboBoxItem itemContrato = combo.FindItemByValue(Request.QueryString["ContratoWF"].ToString());

            foreach (RadComboBoxItem item in combo.Items)
            {
                if (item.Index != itemContrato.Index)
                {
                    CheckBox chk = (CheckBox)item.FindControl("chk1");
                    chk.Checked = false;
                }
            }
            combo.SelectedIndex = itemContrato.Index;
        }
        else
        {
            combo.SelectedIndex = 0;
        }
    }

    private void CarregaComboAno(RadComboBox combo)
    {
        DataTable _dtAno = new DataTable();

        DataColumn _dcAno = new DataColumn();
        _dcAno.ColumnName = "Ano";
        _dcAno.DataType = Type.GetType("System.String");
        _dtAno.Columns.Add(_dcAno);

        DataColumn _dcAnoId = new DataColumn();
        _dcAnoId.ColumnName = "AnoId";
        _dcAnoId.DataType = Type.GetType("System.Int32");
        _dtAno.Columns.Add(_dcAnoId);

        DataRow _drAno;
        _drAno = _dtAno.NewRow();

        _drAno["Ano"] = "Todos";
        _drAno["AnoId"] = 0;
        _dtAno.Rows.Add(_drAno);

        for (int i = DateTime.Now.Year; i >= DateTime.Now.Year - 15; i--)
        {
            _drAno = _dtAno.NewRow();
            _drAno["Ano"] = i.ToString();
            _drAno["AnoId"] = i;
            _dtAno.Rows.Add(_drAno);
        }

        combo.DataSource = _dtAno;
        combo.DataBind();

        // tratamento para situação de selecionar o ano conforme o link do e-mail para os respectivo documento
        if (Session["WorkFlow"] != null)
        {
            RadComboBoxItem itemAno = combo.FindItemByValue(Request.QueryString["AnoWF"].ToString());
            if (itemAno == null)
            {
                _drAno = _dtAno.NewRow();
                _drAno["Ano"] = Request.QueryString["AnoWF"].ToString();
                _drAno["AnoId"] = int.Parse(Request.QueryString["AnoWF"].ToString());

                _dtAno.Rows.Add(_drAno);

                combo.DataSource = _dtAno;
                combo.DataBind();

                itemAno = combo.FindItemByValue(Request.QueryString["AnoWF"].ToString());
            }

            foreach (RadComboBoxItem item in combo.Items)
            {
                if (item.Index != itemAno.Index)
                {
                    CheckBox chk = (CheckBox)item.FindControl("chk1");
                    chk.Checked = false;
                }
            }
            combo.SelectedIndex = itemAno.Index;
        }
        else
        {
            combo.SelectedIndex = 0;
        }
    }

    private void CarregaComboMes(RadComboBox combo)
    {
        DataTable _dtMes = new DataTable();

        DataColumn _dcMes = new DataColumn();
        _dcMes.ColumnName = "Mes";
        _dcMes.DataType = Type.GetType("System.String");
        _dtMes.Columns.Add(_dcMes);

        DataColumn _dcMesId = new DataColumn();
        _dcMesId.ColumnName = "MesId";
        _dcMesId.DataType = Type.GetType("System.Int32");
        _dtMes.Columns.Add(_dcMesId);

        DataRow _drMes;
        _drMes = _dtMes.NewRow();

        _drMes["Mes"] = "Todos";
        _drMes["MesId"] = 0;
        _dtMes.Rows.Add(_drMes);

        string _nomemes;
        for (int i = 1; i <= 12; i++)
        {
            _nomemes = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(i);
            _nomemes = _nomemes.Substring(0, 1).ToUpper() + _nomemes.Substring(1);

            _drMes = _dtMes.NewRow();
            _drMes["Mes"] = _nomemes;
            _drMes["MesId"] = i;
            _dtMes.Rows.Add(_drMes);
        }

        combo.DataSource = _dtMes;
        combo.DataBind();

        // tratamento para situação de selecionar o ano conforme o link do e-mail para os respectivo documento
        if (Session["WorkFlow"] != null)
        {
            RadComboBoxItem itemMes = combo.FindItemByValue(Request.QueryString["MesWF"].ToString());
            if (itemMes == null)
            {
                _drMes = _dtMes.NewRow();
                _drMes["Mes"] = Request.QueryString["MesWF"].ToString();
                _drMes["MesId"] = int.Parse(Request.QueryString["MesWF"].ToString());

                _dtMes.Rows.Add(_drMes);

                combo.DataSource = _dtMes;
                combo.DataBind();

                itemMes = combo.FindItemByValue(Request.QueryString["MesWF"].ToString());
            }

            foreach (RadComboBoxItem item in combo.Items)
            {
                if (item.Index != itemMes.Index)
                {
                    CheckBox chk = (CheckBox)item.FindControl("chk1");
                    chk.Checked = false;
                }
            }
            combo.SelectedIndex = itemMes.Index;
        }
        else
        {
            combo.SelectedIndex = 0;
        }
    }

    private void OcultaCampos(bool oculta)
    {
        trResultado.Visible = !oculta;
    }

    private void Pesquisa()
    {
        rgNotasEmitidas.DataSource = CarregaNotasEmitidas();
    }

    private DataTable CarregaNotasEmitidas()
    {
        ContratoNotasEmitidas nfemitidas = new ContratoNotasEmitidas();
        DataTable listNFEmitidas = new DataTable();

        List<int> listContratos = new List<int>();
        foreach (RadComboBoxItem item in cboContrato.Items)
        {
            CheckBox chk = (CheckBox)item.FindControl("chk1");
            if (chk.Checked)
            {
                listContratos.Add(int.Parse(item.Value));
            }
        }

        List<int> listAnos = new List<int>();
        foreach (RadComboBoxItem item in cboAno.Items)
        {
            CheckBox chk = (CheckBox)item.FindControl("chk1");
            if (chk.Checked)
            {
                listAnos.Add(int.Parse(item.Value));
            }
        }

        List<int> listMes = new List<int>();
        foreach (RadComboBoxItem item in cboMes.Items)
        {
            CheckBox chk = (CheckBox)item.FindControl("chk1");
            if (chk.Checked)
            {
                listMes.Add(int.Parse(item.Value));
            }
        }

        int[] _contratos = new int[listContratos.Count];
        for (int i = 0; i < listContratos.Count; i++)
        {
            _contratos[i] = listContratos[i];
        }

        int[] _anos = new int[listAnos.Count];
        for (int i = 0; i < listAnos.Count; i++)
        {
            _anos[i] = listAnos[i];
        }

        int[] _meses = new int[listMes.Count];
        for (int i = 0; i < listMes.Count; i++)
        {
            _meses[i] = listMes[i];
        }

        listNFEmitidas = nfemitidas.ExibirDadosNotasEmitidas(_contratos, _anos, _meses);

        return listNFEmitidas;
    }
    #endregion
}
